iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
Modern Web

Vue菜鳥的自我學習days系列 第 17

17.建立商品詳情內容3

  • 分享至 

  • xImage
  •  

輸入欲購買商品數量
在商品詳情內容中,還需要提供使用者輸入購買數量的表單欄位、計算金額資訊
接著我們實作表單控制,在 ProductInfo.vue 加上表單控制的區塊,並在 data 中加入輸入項對應的屬性

<template>
<div>
<h2>Product Info</h2>
<div class="product-container">
...
<div class="purchase-form">
<label for="qty">Qty: </label>
<input type="number" id="qty" v-model="quantity">
</div>
</div>
</div>
</template>
<script>
export default {
...
data() {
return {
...
quantity: 0,
};
},
...
}
</script>
<style scoped>
...
.purchase-form {
display: flex;
flex-wrap: nowrap;
width: 100%;
justify-content: center;
align-items: baseline;
}
.form-control {
display: flex;
justify-content: flex-end;
width: 50%;
padding: 10px;
}
.form-control label {
font-size: 1.2em;
}
.form-control input::-webkit-inner-spin-button{
-webkit-appearance: none;
}
.form-control input {
margin: 0 5px;
border: 1px solid #ddd;
box-sizing: border-box;
border-radius: 2px;
line-height: 20px;
width: 40px;
font-size: 1.1em;
text-align: center;
}
</style>

在 input 使用 v-model 來達到資料綁定,當使用者更改購買數量,data.quantity 也會跟著變動,可以在 template 中加入下面內容驗證

<span>{{ quantity }}</span>

接著實作小計計算,這裡可以用 computed 來快速地達成我們的需求

<script>
export default {
...
computed: {
amount() {
return this.product.price * this.quantity;
},
},
...
}
</script>

template 可以如下變更,別忘記加入 filter 來顯示幣值符號

<template>
<div>
<h2>Product Info</h2>
<div class="product-container">
...
<div class="purchase-form">
<div class="form-control">
<label for="qty">Qty: </label>
<input type="number" id="qty" v-model="quantity">
</div>
<div class="purchase-amount">{{ amount | currency }}</div>
</div>
</div>
</div>
</template>
<style scoped>
...
.purchase-amount {
display: flex;
justify-content: flex-start;
width: 50%;
}
</style>

上一篇
16.建立商品詳情內容2
下一篇
18.利用 Router 切換頁面內容
系列文
Vue菜鳥的自我學習days39
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言